[请教][C编程问题]1000KM路程,车只能装500L油(1L油跑1KM),用这辆车建立临时加油站的问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 13:45:29
详细问题描述如下:

有一辆吉普车要穿越一个沙漠,路程是1000KM,但是这辆车最高只能携带
500L的油(1L油跑1KM)。由于沙漠中没有加油站,于是先要用这辆车在沙漠中建立临时加油站。

请问,要在什么地方建立临时加油站?每个临时加油站要存多少油才能使吉普车穿越沙漠“所消耗的油最少”?最少消耗多少L油?

如何用C语言程序实现?

敬请前辈给出“解题思路”以及“源码”~谢谢~ :)
(就只有20分了,还请各位前辈帮助一下~)

搞定了

算法:
要使消耗的油最少,就要使在建立起来的各各站点之间跑的路最少,建立站点的目的就是要在中间建立一些站点,使车最后一次经过这些站点加油后油箱是满的,并且最后一个站点是在中间,这样就能让车过沙漠了.
我们先来分析一下倒少第二个站点,要使倒数第二个站点与最后一个站点之间的路走的最少,他至少需要走三次,因为建立最后一个站点的时候至少要经过此处两次,最后走的时候会经过一次.也就是说500升油可以在这两个站点之前跑3次,那最后一个站点就必须储存500/3的油,这样才能保证经过最后一个站点的时候油是满的,同理再分析一下倒数第三个站点和倒数第二个站点至少要跑5次,那倒数第二个站点必须储存500/7的油,就这样一直分析下去....直到500/3+500/7+500/9+...>500就停止

程序:

#include<stdio.h>
int main()
{
int k=0,i;
float dist=500,stat[10][2]={{500,0.5}},sum;
while(dist<1000)
{
k++;
stat[k][1]=stat[k-1][1]*(1-1.0/(2*k+1));
stat[k][0]=500.0/(2*k+1);
dist+=500.0/(2*k+1);
}
dist-=500.0/(2*k+1);
stat[k][0]=1000-dist;
for(i=k;i>0;i--)
printf("第%d个站点:距起点%f处加油%f升\n",k-i+1,stat[i][1],stat[i][0]);
printf("总共需要%f升油\n",500*k+stat[k][0]*(2*k+1));
return 0;
}

建议你去请教C语言编程问题。。。。。。。。 请教C编程小问题 请教C语言编程高手,数组问题。 请教高手C语言编程问题: 请教 turpo c编程运行的问题 请教一个C语言编程问题!!! 请教一个c语言编程问题 C语言编程问题(请教高手) 请教各位C语言编程的问题 请教C编程